#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>
#include <QString>
#include <QComboBox>
#include "libio.h"

std::pair<std::string, int> parseString(const std::string& str);
QT_BEGIN_NAMESPACE

namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class RouteInfoWindow : public QWidget
{
    Q_OBJECT

public:
    RouteInfoWindow(QString routeInfo, QWidget *parent = nullptr);

private:
    // 显示新窗口的方法
    void showNewWindow(const QString &info, const QString &title);
};


// 车次信息窗口类，显示车次的详细信息
class TrainInfoWindow : public QWidget 
{
    Q_OBJECT

public:
    TrainInfoWindow(QString trainInfo, QWidget *parent = nullptr);
};


class AddStationWindow : public QWidget 
{
    Q_OBJECT

private:
    NewLine *newLine;  // 指针传递 NewLine 对象
    static QLineEdit *stationNameEdit;  // 站点名输入框
    static QLineEdit *intervalEdit;     // 间隔时间输入框

public:
    // 修改后的构造函数，接受 NewLine* 参数
    AddStationWindow(NewLine *line, QWidget *parent = nullptr);
};


// 删除线路窗口类
class DeleteLineWindow : public QWidget 
{
    Q_OBJECT

public:
    DeleteLineWindow(QWidget *parent = nullptr);

};

class DeleteStopWindow : public QWidget 
{
    Q_OBJECT

public:
    DeleteStopWindow(QWidget *parent = nullptr);
};

class AddLineWindow : public QWidget 
{
    Q_OBJECT

public:
    AddLineWindow(QWidget *parent = nullptr);

private:
    static QLineEdit *lineNameEdit;  // 线路名输入框
    static QLineEdit *startTimeEdit;  // 始发时间输入框
    static QLineEdit *endTimeEdit;  // 末班时间输入框
    static QLineEdit *stationNumEdit;  // 站点表输入框
};

// 更新公交车时间窗口类
class ModifyBusTimeWindow : public QWidget 
{
    Q_OBJECT

public:
    ModifyBusTimeWindow(QWidget *parent = nullptr);
};

class AddStopWindow : public QWidget 
{
    Q_OBJECT

public:
    AddStopWindow(NewLine *line, QWidget *parent = nullptr);

private:
    NewLine *newLine;                // 指针传递 NewLine 对象
    static QLineEdit *lineEdit;             // 线路名称输入框
    static QLineEdit *stationNameEdit;      // 新站点名输入框
    static QLineEdit *intervalEdit;         // 间隔时间输入框
    static QComboBox *midwayComboBox;       // 是否中途添加选择框
    static QLineEdit *lastStationEdit;      // 上一站点输入框
    static QLineEdit *nextStationEdit;      // 下一站点输入框
    static QLineEdit *lastIntervalEdit;     // 与上一站的时间间隔输入框
    static QComboBox *insertPositionComboBox; // 插入位置选择框
};

// 假设您在 BusAdminSystemWindow 中有现有的线路数据
class BusAdminSystemWindow : public QWidget 
{
    Q_OBJECT

public:
    BusAdminSystemWindow(QWidget *parent = nullptr);
};


// 路线查询窗口类，用户输入起点和终点，显示查询功能
class RouteQueryWindow : public QWidget 
{
    Q_OBJECT

public:
    RouteQueryWindow(QWidget *parent = nullptr);
};

// 车次查询窗口类，输入车次后显示详细信息
class TrainQueryWindow : public QWidget 
{
    Q_OBJECT

public:
    TrainQueryWindow(QWidget *parent = nullptr);
};

// 主窗口类，显示用户和管理员的不同界面，并添加图片
class MainAppWindow : public QWidget 
{
    Q_OBJECT

public:
    MainAppWindow(bool isAdmin, QWidget *parent = nullptr);
};

class LoginWindow : public QWidget 
{
    Q_OBJECT

public:
    LoginWindow(QWidget *parent = nullptr);
};


#endif // __MAINWINDOW_H























